/*****************************************************
 * 検索結果を格納するクラスの基底クラス
 * @extends Array
 * @abstract
 * @author kino
 *****************************************************/
function AbstractResults(itemType){
	/** プロパティの継承 */
	Array.call(this);

	/** {ItemType} 保持しているデータの種別: サブクラスのコンストラクタにより設定される */	
	this.itemType = itemType;
}

/** メソッドの継承 */
ClassUtility.inherit(AbstractResults, Array);

/**
 * 保持している検索結果一覧のデータを、JSON形式で表した文字列を返す。
 */
AbstractResults.prototype.toJson = function(){
    var result = "{";
    result += '"itemType":';
	result += '"' + this.itemType + "'";
	result += '"results":';
	result += '[';
    for (var i = 0; i < this.length; i++) {
        result += this[i].toJson();
		result += ', ';
    }
	result += ']';
	result += '}';
    return result;
}

/**
 * 結果一覧のデータに相当するJSON表現をeval()した結果オブジェクトから、データを復元する。
 * @abstract
 * @param {JSON} evaledJson eval()したJSON表現。
 */
AbstractResults.prototype.fromJson = function(evaledJson){
	throw new Error("This method is abstract.");
}

